#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main()
{
    int pipefd[2];
    char buf[100];
    int len;

    // 创建匿名管道
    if (pipe(pipefd) == -1)
    {
        perror("make pipe");
        exit(-1);
    }
        
    // stdin读取
    while (fgets(buf, 100, stdin))
    {
        len = strlen(buf);

        // 写入管道
        if (write(pipefd[1], buf, len) != len)
        {
            perror("write to pipe");
            break;
        }

        // 清空缓冲区
        memset(buf, 0x00, sizeof(buf));

        // 从管道读取
        if (read(pipefd[0], buf, len) == -1)
        {
            perror("read in pipe");
            break;
        }

        // 写入到stdout
        if (write(1, buf, len) != len)
        {
            perror("write to stdout");
            break;
        }
    }

    return 0;
}